#ifndef __edaHC_h__
#define __edaHC_h__

#include "edaSearch.h"
#include "edaHCMoveExpl.h"
#include "edaDefine.h"

class edaHC : public edaSearch
{
  public:
    edaHC() : move(NULL), moveExpl(NULL) {};
    edaHC(edaMove *_move, edaMoveGen *_moveNext, edaMoveSelect *_moveSelect);
    edaHC(edaMove *_move, edaHCMoveExpl *_moveExpl);
    ~edaHC();
    /**
     * Launch the search
     * 
     * \param sol The current solution to improve
     */
    bool search(edaSolution &sol);
    virtual void Serialize(edaBuffer &buf, bool pack);

    setClassID( _SYSCLASSID_ + _CLSID_EDAHC_ );

  private:
    edaMove *move;
    edaHCMoveExpl *moveExpl;
};

#endif
